package io1;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * 缓冲流写出时的缓冲区问题
 * 通过缓冲流写出的数据会被临时存入缓冲流内部的字节数组中;
 * 直到数组存满数据时才会真实写出一次;
 * 通过缓冲输出流的flush()方法会强制将缓冲流中已经缓冲的数据一次性写出;
 * flush()方法是在接口Flushable中定义的,而超类OutputStream实现了该接口,
 * 意味着所有输出流都具备flush()方法
 *
 */
public class FlushDemo {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("bos.txt");
        BufferedOutputStream bos =new BufferedOutputStream(fos);
        String s = "和我在成都的街头走一走,wo~o~o";
        bos.write(s.getBytes(StandardCharsets.UTF_8));
        System.out.println("写出完毕");
        bos.close();//缓冲流close()时会自动调用一次flush()确保所有数据关闭前写出;
    }
}
